/*     */ package com.zimbra.cs.db;
/*     */ 
/*     */ import com.google.common.base.Joiner;
/*     */ import java.sql.ResultSet;
/*     */ import java.sql.ResultSetMetaData;
/*     */ import java.sql.SQLException;
/*     */ import java.util.ArrayList;
/*     */ import java.util.LinkedHashMap;
/*     */ import java.util.List;
/*     */ import java.util.Map;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class DbResults
/*     */ {
/*  55 */   private List<Object[]> data = new ArrayList();
/*  56 */   private Map<String, Integer> columnIndexes = new LinkedHashMap();
/*  57 */   private int rowNum = 0;
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public DbResults(ResultSet resultSet)
/*     */     throws SQLException
/*     */   {
/*  67 */     if (resultSet == null) {
/*  68 */       throw new IllegalArgumentException("resultSet cannot be null");
/*     */     }
/*     */     
/*  71 */     boolean isFirst = true;
/*  72 */     int numCols = 0;
/*     */     
/*  74 */     while (resultSet.next()) {
/*  75 */       if (isFirst)
/*     */       {
/*  77 */         ResultSetMetaData md = resultSet.getMetaData();
/*  78 */         numCols = md.getColumnCount();
/*  79 */         for (int i = 1; i <= numCols; i++) {
/*  80 */           this.columnIndexes.put(md.getColumnName(i), Integer.valueOf(i));
/*     */         }
/*  82 */         isFirst = false;
/*     */       }
/*     */       
/*  85 */       Object[] row = new Object[numCols];
/*  86 */       for (int i = 0; i < numCols; i++) {
/*  87 */         row[i] = resultSet.getObject(i + 1);
/*     */       }
/*  89 */       this.data.add(row);
/*     */     }
/*     */     
/*  92 */     resultSet.close();
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public int size()
/*     */   {
/* 101 */     return this.data.size();
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public boolean next()
/*     */   {
/* 110 */     if (this.rowNum == this.data.size()) {
/* 111 */       return false;
/*     */     }
/* 113 */     this.rowNum += 1;
/* 114 */     return true;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */   public Object[] getRow(int row)
/*     */   {
/* 121 */     return (Object[])this.data.get(row - 1);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public boolean isNull(int row, int col)
/*     */   {
/* 131 */     Object[] rowData = getRow(row);
/* 132 */     return rowData[(col - 1)] == null;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public boolean isNull(int col)
/*     */   {
/* 140 */     return isNull(getRowNum(), col);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public boolean isNull(int row, String colName)
/*     */   {
/* 148 */     return isNull(row, getIndex(colName));
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public boolean isNull(String colName)
/*     */   {
/* 156 */     return isNull(getRowNum(), colName);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public Object getObject(int row, int col)
/*     */   {
/* 166 */     Object[] rowData = getRow(row);
/* 167 */     return rowData[(col - 1)];
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public Object getObject(int col)
/*     */   {
/* 175 */     return getObject(getRowNum(), col);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public Object getObject(int row, String colName)
/*     */   {
/* 183 */     return getObject(row, getIndex(colName));
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public Object getObject(String colName)
/*     */   {
/* 191 */     return getObject(getRowNum(), getIndex(colName));
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public String getString(int row, int col)
/*     */   {
/* 201 */     return (String)getObject(row, col);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public String getString(int col)
/*     */   {
/* 209 */     return getString(getRowNum(), col);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public String getString(int row, String colName)
/*     */   {
/* 217 */     return getString(row, getIndex(colName));
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public String getString(String colName)
/*     */   {
/* 225 */     return getString(getRowNum(), colName);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public int getInt(int row, int col)
/*     */   {
/* 235 */     Number i = (Number)getObject(row, col);
/* 236 */     if (i == null) {
/* 237 */       throw new IllegalStateException("null value at (" + row + ", " + col + ")");
/*     */     }
/* 239 */     return i.intValue();
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public int getInt(int col)
/*     */   {
/* 247 */     return getInt(getRowNum(), col);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public int getInt(int row, String colName)
/*     */   {
/* 255 */     return getInt(row, getIndex(colName));
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public int getInt(String colName)
/*     */   {
/* 263 */     return getInt(getRowNum(), colName);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public boolean getBoolean(int row, int col)
/*     */   {
/* 273 */     Object o = getObject(row, col);
/* 274 */     if (o == null) {
/* 275 */       throw new IllegalStateException("null value at (" + row + ", " + col + ")");
/*     */     }
/* 277 */     if ((o instanceof Boolean)) {
/* 278 */       return ((Boolean)o).booleanValue();
/*     */     }
/* 280 */     int i = ((Number)o).intValue();
/* 281 */     return i != 0;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public boolean getBoolean(int col)
/*     */   {
/* 289 */     return getBoolean(getRowNum(), col);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public boolean getBoolean(int row, String colName)
/*     */   {
/* 297 */     return getBoolean(row, getIndex(colName));
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */   public boolean getBoolean(String colName)
/*     */   {
/* 305 */     return getBoolean(getRowNum(), colName);
/*     */   }
/*     */   
/*     */ 
/*     */   private int getIndex(String colName)
/*     */   {
/* 311 */     Integer i = (Integer)this.columnIndexes.get(colName);
/* 312 */     if (i == null) {
/* 313 */       throw new IllegalArgumentException("Column '" + colName + "' does not exist");
/*     */     }
/* 315 */     return i.intValue();
/*     */   }
/*     */   
/*     */   private int getRowNum() {
/* 319 */     if (this.rowNum < 1) {
/* 320 */       this.rowNum = 1;
/*     */     }
/* 322 */     return this.rowNum;
/*     */   }
/*     */   
/* 325 */   private static final Joiner COMMA_JOINER = Joiner.on(",").useForNull("<NULL>");
/*     */   
/*     */   public String toString()
/*     */   {
/* 329 */     StringBuilder buf = new StringBuilder();
/* 330 */     buf.append(COMMA_JOINER.join(this.columnIndexes.keySet()));
/* 331 */     for (Object[] row : this.data) {
/* 332 */       buf.append('\n').append(COMMA_JOINER.join(row));
/*     */     }
/* 334 */     return buf.toString();
/*     */   }
/*     */ }


/* Location:              /home/mint/zimbrastore.jar!/com/zimbra/cs/db/DbResults.class
 * Java compiler version: 7 (51.0)
 * JD-Core Version:       0.7.1
 */